home *** CD-ROM | disk | FTP | other *** search
/ Medabots Cardz / Medabots CD Cardz Sumilidon.bin / mac / assets / slide_puzzle.swf / scripts / frame_1 / DoAction_2.as next >
Text File  |  2001-12-07  |  3KB  |  151 lines

  1. function PieceX(col)
  2. {
  3.    return xBase + col * xSpace;
  4. }
  5. function PieceY(row)
  6. {
  7.    return yBase + row * ySpace;
  8. }
  9. function Initialize()
  10. {
  11.    Congratulations.stop();
  12.    numRows = 3;
  13.    numCols = 3;
  14.    numCells = numRows * numCols;
  15.    xBase = p0._x;
  16.    yBase = p0._y;
  17.    xSpace = p0._width * 1.025;
  18.    ySpace = p0._height * 1.025;
  19.    var c = 1;
  20.    var r = 0;
  21.    var i = 1;
  22.    while(i < numCells - 1)
  23.    {
  24.       var name = "p" + i;
  25.       var newPiece = eval(name);
  26.       newPiece._x = PieceX(c);
  27.       newPiece._y = PieceY(r);
  28.       newPiece.PieceNumber = i + 1;
  29.       if(++c >= numCols)
  30.       {
  31.          c = 0;
  32.          r++;
  33.       }
  34.       i++;
  35.    }
  36.    posArray = [];
  37.    i = 0;
  38.    while(i < numCells - 1)
  39.    {
  40.       posArray[i] = i;
  41.       i++;
  42.    }
  43.    empty = numCells - 1;
  44. }
  45. function isWinner()
  46. {
  47.    if(Key.isDown(Key.CONTROL))
  48.    {
  49.       gotoAndStop(2);
  50.    }
  51.    var i = 0;
  52.    while(i < numCells - 1)
  53.    {
  54.       if(posArray[i] != i)
  55.       {
  56.          return false;
  57.       }
  58.       i++;
  59.    }
  60.    return true;
  61. }
  62. function Click(clicked)
  63. {
  64.    clicked--;
  65.    if(isWinner())
  66.    {
  67.       shuffle();
  68.       gotoAndStop(1);
  69.    }
  70.    else
  71.    {
  72.       pos = posArray[clicked];
  73.       emptyRow = Math.floor(empty / numCols);
  74.       emptyCol = empty - emptyRow * numCols;
  75.       clickedRow = Math.floor(pos / numCols);
  76.       clickedCol = pos - clickedRow * numCols;
  77.       rowDiff = Math.abs(clickedRow - emptyRow);
  78.       colDiff = Math.abs(clickedCol - emptyCol);
  79.       adjacent = rowDiff + colDiff == 1;
  80.       if(adjacent)
  81.       {
  82.          var piece = eval("/p" + clicked);
  83.          piece._x = PieceX(emptyCol);
  84.          piece._y = PieceY(emptyRow);
  85.          tellTarget(sound)
  86.          {
  87.             gotoAndPlay(2);
  88.          }
  89.          posArray[clicked] = empty;
  90.          empty = pos;
  91.          if(isWinner())
  92.          {
  93.             gotoAndStop(2);
  94.          }
  95.       }
  96.    }
  97. }
  98. function Shuffle()
  99. {
  100.    var cf = function(x, y)
  101.    {
  102.       if(x[1] < y[1])
  103.       {
  104.          return -1;
  105.       }
  106.       if(y[1] < x[1])
  107.       {
  108.          return 1;
  109.       }
  110.       return 0;
  111.    };
  112.    var i;
  113.    var cell = [];
  114.    i = 0;
  115.    while(i < numCells)
  116.    {
  117.       cell.push([i,Math.random()]);
  118.       i++;
  119.    }
  120.    cell.sort(cf);
  121.    var r = 0;
  122.    var c = 0;
  123.    i = 0;
  124.    while(i < numCells)
  125.    {
  126.       var piece = cell[i][0];
  127.       if(piece == numCells - 1)
  128.       {
  129.          empty = i;
  130.       }
  131.       else
  132.       {
  133.          posArray[piece] = i;
  134.          var p = eval("/p" + piece);
  135.          p._x = PieceX(c);
  136.          p._y = PieceY(r);
  137.       }
  138.       if(++c >= numCols)
  139.       {
  140.          c = 0;
  141.          r++;
  142.       }
  143.       i++;
  144.    }
  145. }
  146. if(!initialized)
  147. {
  148.    Initialize();
  149.    initialized = true;
  150. }
  151.